<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-perl" role="wrap">
  <?dbhtml filename="perl.html"?>

  <sect1info condition="script">
    <productname>perl</productname>
    <productnumber>&perl-version;</productnumber>
    <address>&perl-url;</address>
  </sect1info>

  <title>Perl-&perl-version;</title>

  <indexterm zone="ch-system-perl">
    <primary sortas="a-Perl">Perl</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

     <para>Высокоуровневый интерпретируемый динамический язык программирования общего назначения,
        он необходим для установки и выполнения тестов некоторых пакетов LFS.</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&perl-ch6-sbu;</seg>
        <seg>&perl-ch6-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Установка пакета Perl</title>

    <para>Для начала создадим файл <filename>/etc/hosts</filename> для определения ссылки в файлах конфигурации Perl и для прохождения опциональных наборов тестов:</para>

<screen><userinput remap="pre">echo "127.0.0.1 localhost $(hostname)" &gt; /etc/hosts</userinput></screen>

    <para>Эта версия Perl теперь собирает  Compress::Raw::Zlib и
    Compress::Raw::BZip2 модули. По умолчанию, Perl будет использовать внутреннюю копию исходных файлов для сборки. Выполните следующую команду, чтобы использовать уже установленные системные библиотеки:</para>

<screen><userinput remap="pre">export BUILD_ZLIB=False
export BUILD_BZIP2=0</userinput></screen>
<!--
    <para>Приментие патч to allow the Errno.pm module and the h2ph
    program to build correctly when building with GCC 5:</para>

<screen><userinput remap="pre">patch -Np1 -i ../&perl-gcc5-fixes-patch;</userinput></screen>
-->
 <para>Apply a change to allow the program to build correctly when building
    with the latest versions of gcc:</para>

<screen><userinput remap="pre">sed -i 's/67]/6789]/' Configure</userinput></screen>

    <para>Чтобы иметь полный контроль над настройкой, можно убрать аргумент <quote>-des</quote> из нижеуказанной команды и вручную укажите местоположения для сборки. В качестве альтернативы используйте команду, как показано ниже и используйте настройки по умолчанию, которые автоматически обнаружит Perl:</para>

<screen><userinput remap="configure">sh Configure -des -Dprefix=/usr                 \
                  -Dvendorprefix=/usr           \
                  -Dman1dir=/usr/share/man/man1 \
                  -Dman3dir=/usr/share/man/man3 \
                  -Dpager="/usr/bin/less -isR"  \
                  -Duseshrplib                  \
                  -Dusethreads</userinput></screen>

    <variablelist>
      <title>Значение параметров конфигурации:</title>

      <varlistentry>
        <term><parameter>-Dvendorprefix=/usr</parameter></term>
        <listitem>
          <para>Гарантирует что <command>perl</command> будет знать место, куда выполнять установку модулей</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>-Dpager="/usr/bin/less -isR"</parameter></term>
        <listitem>
          <para>Гарантирует что будет использована программа <userinput>less</userinput> вместо
            <userinput>more</userinput>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>-Dman1dir=/usr/share/man/man1
        -Dman3dir=/usr/share/man/man3</parameter></term>
        <listitem>
          <para>Поскольку Groff ещё не установлен, сценарий <command>Configure</command> думает что нам не требуется документация. Эти аргументы переопределяют это решение.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>-Duseshrplib</parameter></term>
        <listitem>
          <para>Сборка общей библиотеки libperl необходимая для некоторых модулей Perl</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>-Dusethreads</parameter></term>
        <listitem>
          <para>Сборка Perl с поддержкой потоков</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Скомпилируйте пакет:</para>

<screen><userinput remap="make">make</userinput></screen>

    <para>Для выполнения тестов (приблизительное время 11 SBU), выполните следующую команду:</para>

<screen><userinput remap="test">make -k test</userinput></screen>

	 <note>
	 <para>Один тест не пройдет из-за использования последней версии gdbm.</para></note>
    <para>Установите пакет and clean up:</para>

<screen><userinput remap="install">make install
unset BUILD_ZLIB BUILD_BZIP2</userinput></screen>

  </sect2>

  <sect2 id="contents-perl" role="content">
    <title>Содержимое пакета Perl</title>

    <segmentedlist>
      <segtitle>Установленные программы</segtitle>
      <segtitle>Установленные библиотеки</segtitle>
      <segtitle>Каталог установки</segtitle>

      <seglistitem>
        <seg>corelist, cpan, enc2xs, encguess, h2ph, h2xs, instmodsh,
        json_pp, libnetcfg, perl, perl&perl-version; (hard link to perl),
        perlbug, perldoc, perlivp, perlthanks (hard link to perlbug), piconv,
        pl2pm, pod2html, pod2man, pod2text, pod2usage, podchecker, podselect,
        prove, ptar, ptardiff, ptargrep, shasum,
        splain, xsubpp, and zipdetails</seg>
        <seg>Many which cannot all be listed here</seg>
        <seg>/usr/lib/perl5</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Краткое описание</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <!-- <varlistentry id="c2ph">
        <term><command>c2ph</command></term>
        <listitem>
          <para>Выполняет дамп  структур Сгенерированных из
          <command>cc -g -S</command></para>
          <indexterm zone="ch-system-perl c2ph">
            <primary sortas="b-c2ph">c2ph</primary>
          </indexterm>
        </listitem>
      </varlistentry> -->

      <varlistentry id="corelist">
        <term><command>corelist</command></term>
        <listitem>
          <para>Интерфейс командной строки для модуля Module::CoreList</para>
          <indexterm zone="ch-system-perl corelist">
            <primary sortas="b-corelist">corelist</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="cpan">
        <term><command>cpan</command></term>
        <listitem>
          <para>Взаимодействие с Comprehensive Perl Archive Network (CPAN)
          из командной строки</para>
          <indexterm zone="ch-system-perl cpan">
            <primary sortas="b-cpan">cpan</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="enc2xs">
        <term><command>enc2xs</command></term>
        <listitem>
          <para>Создает расширение Perl для модуля Encode из
           Unicode Character Mappings или файлы кодировки Tcl</para>
          <indexterm zone="ch-system-perl enc2xs">
            <primary sortas="b-enc2xs">enc2xs</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="encguess">
        <term><command>encguess</command></term>
        <listitem>
          <para>Предполагает тип кодировки одного или нескольких файлов</para>
          <indexterm zone="ch-system-perl encguess">
            <primary sortas="b-encguess">encguess</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="h2ph">
        <term><command>h2ph</command></term>
        <listitem>
          <para>Преобразует <filename class="extension">.h</filename> заголовочные файлы Си
          в <filename class="extension">.ph</filename> заголовочные файлы Perl</para>
          <indexterm zone="ch-system-perl h2ph">
            <primary sortas="b-h2ph">h2ph</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="h2xs">
        <term><command>h2xs</command></term>
        <listitem>
          <para>Преобразует <filename class="extension">.h</filename> заголовочные файлы Си
          в расширение Perl</para>
          <indexterm zone="ch-system-perl h2xs">
            <primary sortas="b-h2xs">h2xs</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="instmodsh">
        <term><command>instmodsh</command></term>
        <listitem>
          <para>Сценарий оболочки для проверки установленных модулей Perl,
           и создание архива из установленного модуля</para>
          <indexterm zone="ch-system-perl instmodsh">
            <primary sortas="b-instmodsh">instmodsh</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="json_pp">
        <term><command>json_pp</command></term>
        <listitem>
          <para>Преобразует данные между определенными форматами ввода и вывода</para>
          <indexterm zone="ch-system-perl json_pp">
            <primary sortas="b-json_pp">json_pp</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libnetcfg">
        <term><command>libnetcfg</command></term>
        <listitem>
          <para>Может использоваться для настройки модуля
          <filename class="libraryfile">libnet</filename></para>
          <indexterm zone="ch-system-perl libnetcfg">
            <primary sortas="b-libnetcfg">libnetcfg</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="perl">
        <term><command>perl</command></term>
        <listitem>
          <para>Объединяет некоторые из лучших возможностей языка Си, <command>sed</command>,
          <command>awk</command> и <command>sh</command>в один язык</para>
          <indexterm zone="ch-system-perl perl">
            <primary sortas="b-perl">perl</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="perl-version">
        <term><command>perl&perl-version;</command></term>
        <listitem>
          <para>Жесткая ссылка на <command>perl</command></para>
          <indexterm zone="ch-system-perl perl-version">
            <primary sortas="b-perl&perl-version;">perl&perl-version;</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="perlbug">
        <term><command>perlbug</command></term>
        <listitem>
          <para>Используется для создания отчетов об ошибках Perl или входящих в состав модулей, для отправки по электронной почте</para>
          <indexterm zone="ch-system-perl perlbug">
            <primary sortas="b-perlbug">perlbug</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="perldoc">
        <term><command>perldoc</command></term>
        <listitem>
          <para>Отображает часть документации в формате pod, которая встроена
           в дерево установки Perl или в сценарии Perl</para>
          <indexterm zone="ch-system-perl perldoc">
            <primary sortas="b-perldoc">perldoc</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="perlivp">
        <term><command>perlivp</command></term>
        <listitem>
          <para>Процедура проверки установки Perl; его можно использовать для
           того чтобы убедиться в корректности установки и настройки Perl и его библиотек</para>
          <indexterm zone="ch-system-perl perlivp">
            <primary sortas="b-perlivp">perlivp</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="perlthanks">
        <term><command>perlthanks</command></term>
        <listitem>
          <para>Используется для создания благодарственных сообщений на электронную почту разработчиков Perl</para>
          <indexterm zone="ch-system-perl perlthanks">
            <primary sortas="b-perlthanks">perlthanks</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="piconv">
        <term><command>piconv</command></term>
        <listitem>
          <para>Версия Perl конвертера кодировки символов
          <command>iconv</command></para>
          <indexterm zone="ch-system-perl piconv">
            <primary sortas="b-piconv">piconv</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="pl2pm">
        <term><command>pl2pm</command></term>
        <listitem>
          <para>Грубый инструмент для преобразования файлов Perl4
          <filename class="extension">.pl</filename> в модули Perl5
          <filename class="extension">.pm</filename></para>
          <indexterm zone="ch-system-perl pl2pm">
            <primary sortas="b-pl2pm">pl2pm</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="pod2html">
        <term><command>pod2html</command></term>
        <listitem>
          <para>Преобразует файлы из формата pod в формат HTML</para>
          <indexterm zone="ch-system-perl pod2html">
            <primary sortas="b-pod2html">pod2html</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="pod2man">
        <term><command>pod2man</command></term>
        <listitem>
          <para>Преобразует данные pod в форматированны формат * roff</para>
          <indexterm zone="ch-system-perl pod2man">
            <primary sortas="b-pod2man">pod2man</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="pod2text">
        <term><command>pod2text</command></term>
        <listitem>
          <para>Преобразует данные pod в форматированный текст ASCII</para>
          <indexterm zone="ch-system-perl pod2text">
            <primary sortas="b-pod2text">pod2text</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="pod2usage">
        <term><command>pod2usage</command></term>
        <listitem>
          <para>Отображает сообщений об использовании из встроенных документов pod в файлы</para>
          <indexterm zone="ch-system-perl pod2usage">
            <primary sortas="b-pod2usage">pod2usage</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="podchecker">
        <term><command>podchecker</command></term>
        <listitem>
          <para>Проверяет синтаксис файлов документации формата pod</para>
          <indexterm zone="ch-system-perl podchecker">
            <primary sortas="b-podchecker">podchecker</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="podselect">
        <term><command>podselect</command></term>
        <listitem>
          <para>Отображение выбранных разделов pod документации</para>
          <indexterm zone="ch-system-perl podselect">
            <primary sortas="b-podselect">podselect</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="prove">
        <term><command>prove</command></term>
        <listitem>
          <para>Инструмент командной строки для запуска тестов модуля Test :: Harness</para>
          <indexterm zone="ch-system-perl prove">
            <primary sortas="b-prove">prove</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <!-- <varlistentry id="pstruct">
        <term><command>pstruct</command></term>
        <listitem>
          <para>Дампы структур Си, сгенерированные из <command>cc -g -S</command></para>
          <indexterm zone="ch-system-perl pstruct">
            <primary sortas="b-pstruct">pstruct</primary>
          </indexterm>
        </listitem>
      </varlistentry> -->

      <varlistentry id="ptar">
        <term><command>ptar</command></term>
        <listitem>
          <para>Похожая на <command>tar</command>программа, написанная на языке Perl</para>
          <indexterm zone="ch-system-perl ptar">
            <primary sortas="b-ptar">ptar</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="ptardiff">
        <term><command>ptardiff</command></term>
        <listitem>
          <para>Программа Perl, которая сравнивает извлеченный архив с
          нераспакованной областью</para>
          <indexterm zone="ch-system-perl ptardiff">
            <primary sortas="b-ptardiff">ptardiff</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="ptargrep">
        <term><command>ptargrep</command></term>
        <listitem>
          <para>Программа Perl, применяющая сопоставление шаблонов к содержимому
          файлов в архиве tar</para>
          <indexterm zone="ch-system-perl ptargrep">
            <primary sortas="b-ptargrep">ptargrep</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="shasum">
        <term><command>shasum</command></term>
        <listitem>
          <para>Печать или проверка контрольных сумм SHA</para>
          <indexterm zone="ch-system-perl shasum">
            <primary sortas="b-shasum">shasum</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="splain">
        <term><command>splain</command></term>
        <listitem>
          <para>Используется для диагностики предупреждений в Perl</para>
          <indexterm zone="ch-system-perl splain">
            <primary sortas="b-splain">splain</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="xsubpp">
        <term><command>xsubpp</command></term>
        <listitem>
          <para>Преобразует Perl XS код в Си код</para>
          <indexterm zone="ch-system-perl xsubpp">
            <primary sortas="b-xsubpp">xsubpp</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="zipdetails">
        <term><command>zipdetails</command></term>
        <listitem>
          <para>Отображает сведения о внутренней структуре Zip-файла</para>
          <indexterm zone="ch-system-perl zipdetails">
            <primary sortas="b-zipdetails">zipdetails</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
